home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-09-01 | 2.5 KB | 134 lines | [TEXT/KAHL] |
- //
- // "XcShell" Skeletal XCMD/XFCN miscellaneous public and semiprivate utilities
- //
- // Copyright ©1991 Mark M. Owen -- All rights reserved
- //
-
- #include <string.h>
-
- #include "HyperXCmd.h"
-
- #define _XCMDUTILS_
-
- #include "XCMDconstants.h"
- #include "XCMDglobals.h"
- #include "XCMDutils.h"
-
-
- semiprivate void UnlockParams (XCmdBlockPtr paramPtr);
- semiprivate void Fail (XCmdBlockPtr paramPtr,int msg);
- semiprivate int verbNumber (char *theVerb,pGlobals pGlb);
-
-
- void zero2pas(char *zeroStr, char *pasStr)
- {
- register int l = 0;
- register char *pS = (char*)pasStr+1;
-
- while( *zeroStr ) {
- *pS++ = *zeroStr++;
- l++;
- if( l > 254 )
- break;
- }
- pasStr[0]=l;
- }
-
- Boolean EqualCPString(char *c,char *p)
- {
- char str[256];
-
- zero2pas( c, str );
- return EqualString( str, p, 0, 0 );
- }
-
- void AppendCStr(char *s1,char *s2)
- {
- strcat( s1, s2 );
- }
-
- void AppendNum(long n,char *str,char *delim)
- {
- char S[257];
-
- NumToString( n, S );
- S[S[0]+1] = 0x00;
- AppendCStr( str, &S[1] );
- AppendCStr( str, delim );
- }
-
- void SetReturnValue(char *msg) // msg MUST be a pascal string
- {
- global_paramPtr->returnValue = PasToZero( global_paramPtr, (StringPtr)msg );
- }
-
- short ResIdOf(char *name,ResType type)
- {
- Handle h;
- short itsId=-1;
- ResType itsType;
- Str255 itsName;
-
- BlockMove( (Ptr)name, (Ptr)itsName, ((long)*name)+1 );
- if( h = GetNamedResource( type, itsName ) )
- GetResInfo( h, &itsId, &itsType, itsName );
- return itsId;
- }
-
- semiprivate void UnlockParams(XCmdBlockPtr paramPtr)
- {
- register int i;
-
- for( i=0; i<paramPtr->paramCount; i++ )
- HUnlock( (Handle)paramPtr->params[i] );
- }
-
- semiprivate void Fail(XCmdBlockPtr paramPtr,int msg)
- {
- Handle h;
- short theId;
- ResType theType;
- char name[256];
- char theStr[512] = "\pError:";
- int size;
-
- if( (h = GetNamedResource( 'STR ', ERRORTAG )) ) {
- HLock( h );
- BlockMove( (Ptr)*h, (Ptr)theStr, (long)**h );
- HUnlock( h );
- ReleaseResource( h );
- }
- size = *theStr;
- if( (h = GetNamedResource( 'STR#', ERRORS )) ) {
- GetResInfo( h, &theId, &theType, name );
- GetIndString( &theStr[size+1], theId, msg );
- if( theStr[size+1] > (255-size) )
- *theStr = 255;
- else
- *theStr += theStr[size+1];
- theStr[size+1] = ' ';
- ReleaseResource( h );
- }
- UnlockParams( paramPtr );
- paramPtr->returnValue = PasToZero( paramPtr, (StringPtr)theStr );
- }
-
- semiprivate int verbNumber(char *theVerb,pGlobals pGlb)
- {
- register
- char *pStr = (*(pGlb->hVerbs))+2;
- register
- int nStr = pGlb->nVerbs;
- register
- int ixStr = 0;
-
- while( nStr-- ) {
- if( EqualString( theVerb, pStr, 0, 0 ) )
- return ixStr;
- pStr += pStr[0]+1;
- ixStr++;
- }
-
- return vInError;
- }
-